<?
	/* Se asegura que el archivo es incluido por el index */
		defined( 'LOAD_MODULE_ACTION' ) or die( 'No esta permitido el acceso directo a ' . __FILE__ );
	/* Cuando se hace el include del archivo automaticamente crea un objeto y lo guarda en una variable temporal */
		$this->oTmpObject = new Relacion_lst( $this );

	class Relacion_lst extends Lst
	{
	function Relacion_lst( &$oModule )
		{
			$this->Lst ( $oModule );
		}

	function make()
		{
			// Crea el Objeto del Paginado
				$oPaginado = new Paging();
			// Obtiene los Parametros la Pagina
				$ncRelacion          = getParam( 'ncRelacion', 'PG' );
				$ncTipoRelacionClase = getParam( 'ncTipoRelacionClase', 'PG' );
				$cPadre              = getParam( 'cPadre','PG');
				$cHijo               = getParam( 'cHijo','PG');
				// Filtro para todas las relaciones de una Clase
				$ncClase             = getParam( 'ncClase','PG');
			// Arma el Query
				$cSql = "SELECT Rel.ncRelacion, cdRelacion, ClP.ncClase as ncClaseP, ClP.cFisico as cFisicoP, ClH.ncClase as ncClaseH, ClH.cFisico as cFisicoH, cdTipoRelacionClase
									FROM  stRelacion as Rel
									JOIN stClase as ClP
										ON Rel.ncClasePadre = ClP.ncClase
									JOIN stClase as ClH
										ON Rel.ncClaseHijo = ClH.ncClase
									JOIN scTipoRelacionClase as TCl
											ON TCl.ncTipoRelacionClase = Rel.ncTipoRelacionClase";
			// Arma el Filtro de la Consulta
			$cSql .= armarFiltro( "Rel.ncRelacion", $ncRelacion, "Rel.ncTipoRelacionClase", $ncTipoRelacionClase
									,"ClH.ncSubModulo", $ncSubModuloHijo
									,"", armarSubFiltro("  ", "(ClP.cFisico LIKE '$cPadre%' )", $cPadre)
									,"", armarSubFiltro("  ", "(ncClasePadre = $ncClase OR ncClaseHijo = $ncClase )",  $ncClase)
									,"", armarSubFiltro("  ", "(ClH.cFisico LIKE '$cHijo%' )", $cHijo) );
			// Calcula la Cantidad de Total de Filas de la Consulta
				$oPaginado->setTotalItems ( $this->oModule->oDatabase->total($cSql) );
			// Arma el Orden de la Consulta
				if( $oPaginado->getOrderBy() )
				{
					$cSql .= " ORDER BY " . $oPaginado->getOrderBy();
				}
			// Ejecuta la Consulta
				if ( $this->oModule->oDatabase->query($cSql , $oPaginado->getFrom(), $oPaginado->getLength() ) )
				{
		?>
			<table class="listado" summary="Esta tabla contiene las relaciones">
				<caption>Listado de Relaciones</caption>
				<!-- Encabezado de la Tabla -->
				<thead>
					<tr>
						<th>Nombre</th>
						<th>Padre</th>
						<th>Hijo</th>
						<th>Tipo</th>
						<th>Acciones</th>
					</tr>
				</thead>
				<!-- Cuerpo de la Tabla -->
				<tbody>
					<? /// Ciclo por cada registro
						while ( $this->oModule->oDatabase->moveNext() )
						{
							// Arma el una cadena con la referencia al registro para pasarlo por get en las acciones por registro
							$cParametroRegistro = "ncRelacion=" . $this->oModule->oDatabase->aFields["ncRelacion"];
					?>
						<tr <?= interlineado( $nLinea, 'par', 'impar' ); ?> >
							<td><?= $this->oModule->oDatabase->aFields["cdRelacion"]; ?></td>
							<td><?= $this->oModule->makeAction( $this->oModule->oDatabase->aFields["cFisicoP"],VER_CLASE, "ncClase=" . $this->oModule->oDatabase->aFields["ncClaseP"] , 3 ); ?></td>
							<td><?= $this->oModule->makeAction( $this->oModule->oDatabase->aFields["cFisicoH"],VER_CLASE, "ncClase=" . $this->oModule->oDatabase->aFields["ncClaseH"] , 3 ); ?></td>
							<td><?= $this->oModule->oDatabase->aFields["cdTipoRelacionClase"]; ?></td>
							<td>
								<? // Acciones Por Registro
										echo $this->oModule->makeAction( '' ,ELIMINAR_RELACION, $cParametroRegistro );
										echo $this->oModule->makeAction( '' ,MODIFICAR_RELACION, $cParametroRegistro );
								?>
							</td>
						</tr>
					<?
						} // Fin del While por cada Registro de la Consulta
					?>
				</tbody>
			</table>
		<?
			} // Fin si hubo un error en la Consulta
		?>
		<div class="acciones">
			<span>
					<? // Acciones
						echo $this->oModule->makeAction( '' ,AGREGAR_RELACION  );
					?>
			</span>
			<span>
				<?=  $oPaginado->makeButtons(); ?>
			</span >
			<span>
				<?=  $oPaginado->makeReferences(); ?>
			</span>
		</div>
<? 	}
	}
?>
